package com.cdtu.store.item.controller;

import com.cdtu.store.common.entity.CategoryEntity;
import com.cdtu.store.common.utils.R;
import com.cdtu.store.item.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;



/**
 * 商品类目表，类目和商品(spu)是一对多关系，类目与品牌是多对多关系
 *
 * @author dongyuhao
 * @date 2020-06-22 23:46:27
 */
@RestController
@RequestMapping("category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;


    /**
     * 查出所有分类以及子孙分类，以树形结构组装
     */
    @GetMapping("/list/tree")
    public R list(){
        List<CategoryEntity> entities = categoryService.listWithTree();
        //组装父子结构
        //1.找到所有的一级分类
        return R.ok().put("data", entities);
    }


    /**
     * 信息
     */
    @GetMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
		CategoryEntity category = categoryService.getById(id);

        return R.ok().put("category", category);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody CategoryEntity category){
		categoryService.save(category);

        return R.ok();
    }

    /**
     * 修改
     */
    @PutMapping("/update")
    public R update(@RequestBody CategoryEntity category){
		categoryService.updateCasecade(category);

        return R.ok();
    }

    /**
     * 删除
     */
    @DeleteMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        //检查当前删除的菜单是否被别的地方引用
        categoryService.removeMenuByIds(Arrays.asList(ids));

        return R.ok();
    }

    /**
     * 根据id查询分类名
     */
    @GetMapping("names")
    public List<String> queryNamesByIds(@RequestParam("ids")List<Long> ids){
        List<String> names = this.categoryService.queryNamesByIds(ids);

        return names;
    }

    /**
     * 根据3级分类id，查询1~3级的分类
     * @param id
     * @return
     */
    @GetMapping("all/level")
    public R queryAllByCid3(@RequestParam("id") Long id){
        List<CategoryEntity> list = this.categoryService.queryAllByCid3(id);
        if (list == null || list.size() < 1) {
            return R.error();
        }
        return R.ok().put("data",list);
    }

}
